home *** CD-ROM | disk | FTP | other *** search
/ Amiga Game-Power / Amiga Game-Power.iso / pd mix ii / access / hddriver / driver / libasm.asm < prev    next >
Assembly Source File  |  1994-05-20  |  2KB  |  117 lines

  1.  
  2.     NOLIST
  3.     INCLUDE    "exec/types.i"
  4.     INCLUDE    "exec/alerts.i"
  5.     INCLUDE    "exec/libraries.i"
  6.     INCLUDE    "libraries/dos.i"
  7.     LIST
  8.  
  9.     XREF    _cLibInit
  10.     XREF    _cOpen
  11.     XREF    _cClose
  12.     XREF    _cExpunge
  13.     XREF    _cAbortIO
  14.     XREF    _cBeginIO
  15.     XREF    _SysBase
  16.     XREF    _DOSBase
  17.     XREF    _LVOOpenLibrary
  18.     XREF    _LVOAlert
  19.  
  20. all        reg        d0/d1/a0/a1/a4/a6
  21. most    reg        d1/a0/a1/a4/a6
  22.  
  23.  
  24. ; This routine gets called after the device has been allocated.
  25. ; The device pointer is in d0. The segment list is in a0. If it
  26. ; returns non-zero, the device will be linked into the device list.
  27.  
  28. dosName    DOSNAME
  29.  
  30.     XDEF    _aLibInit
  31. _aLibInit
  32.     movem.l    a4/a6,-(sp)        ; save registers that Aztec doesnt
  33.     move.l    a0,-(sp)        ; push segment list pointer
  34.     move.l    d0,-(sp)        ; push dev_ptr
  35.     move.l    a6,_SysBase        ; save pointer to exec
  36.     lea     dosName(pc),a1    ; open DOS library
  37.     clr.l    d0                ; library version number
  38.     CALLLIB    _LVOOpenLibrary    
  39.     move.l    d0,_DOSBase        ; save pointer to DOS
  40.     bne.s    init_DosOK
  41.     ALERT    AG_OpenLib!AO_DOSLib
  42.     clr.l    d0                ; NULL means failed
  43.     bra.s    init_end
  44.  
  45. init_DosOK
  46.     jsr     _cLibInit        ; cLibInit(dev_ptr,seg_list)
  47.  
  48. init_end
  49.     addq.l    #4,sp            ; dev_ptr in d0 if cLibInit() ok
  50.     move.l    (sp)+,a0        ; get back seg_list
  51.     movem.l    (sp)+,a4/a6        ; restore registers
  52.     rts
  53.  
  54.  
  55. ;
  56. ; Ok, now these are all simple little routines that save registers
  57. ; that may be damaged by the compiler then pushes the parameters onto
  58. ; the stack
  59. ;
  60.  
  61.     XDEF    _aOpen
  62. _aOpen:
  63.     movem.l    most,-(sp)
  64.     move.l    d1,-(sp)    ; push flags
  65.     move.l    d0,-(sp)    ; push unit number
  66.     move.l    a1,-(sp)    ; push request
  67.     move.l    a6,-(sp)    ; push device
  68.     jsr     _cOpen
  69.     add.l    #16,a7        ; remove parameters
  70.     movem.l    (sp)+,most
  71.     rts
  72.  
  73.     XDEF    _aClose
  74. _aClose:
  75.     movem.l    most,-(sp)
  76.     move.l    a1,-(sp)    ; push request
  77.     move.l    a6,-(sp)    ; push device
  78.     jsr     _cClose
  79.     addq.l    #8,a7        ; remove parameters
  80.     movem.l    (sp)+,most
  81.     rts
  82.  
  83.     XDEF    _aExpunge
  84. _aExpunge:
  85.     movem.l    most,-(sp)
  86.     move.l    a6,-(sp)    ; push device
  87.     jsr     _cExpunge
  88.     addq.l    #4,a7        ; remove parameters
  89.     movem.l    (sp)+,most
  90.     rts
  91.  
  92.     XDEF    _aNull
  93. _aNull:
  94.     clr     d0
  95.     rts
  96.  
  97.     XDEF    _aBeginIO
  98. _aBeginIO:
  99.     movem.l    all,-(sp)
  100.     move.l    a1,-(sp)    ; push request
  101.     move.l    a6,-(sp)    ; push device
  102.     jsr     _cBeginIO
  103.     addq.l    #8,a7        ; remove parameters
  104.     movem.l    (sp)+,all
  105.     rts
  106.  
  107.     XDEF    _aAbortIO
  108. _aAbortIO:
  109.     movem.l    all,-(sp)
  110.     move.l    a1,-(sp)    ; push request
  111.     move.l    a6,-(sp)    ; push device
  112.     jsr     _cAbortIO
  113.     addq.l    #8,a7        ; remove parameters
  114.     movem.l    (sp)+,all
  115.     rts
  116.  
  117.